#ifndef PLAN_H
#define PLAN_H

#include <QWidget>
#include "list.h"
#include "avoid.h"
#include <QThread>
#include <QMenu>


namespace Ui {class Plan;}

class Plan : public QWidget
{
    Q_OBJECT
    friend class Painter;
public:
    bool canmovemousexy;//是否启用鼠标移动显示坐标
    explicit Plan(QWidget *parent = nullptr);
    ~Plan();
    bool eventFilter(QObject * obj, QEvent * e) ;//过滤 范围选择控件的窗口

    //下面三个是对坐标轴做不同的操作
    void updateXYrange();//更新xy显示
    void moveXYrange(QPoint releasePos);//移动坐标轴
    void stretchXYrange(int d);//滚轮放大缩小
private slots:
    void gotoAddfunc();

    void FuncMenu(QPoint point);//显示menu

    void delFunc();

    void updateFunc();

    void updateFuncSetting(const QModelIndex &index);

    void updateXyGrid(int x);//是否绘制坐标轴或者网格
signals:
    void calc(MyFunc* function);
private:
    Ui::Plan *ui;
    List myList;
    double oldX;
    double oldY;
    QThread* thread;//主线程负责处理用户界面，而其他任务则可以交由QThread创建的线程来执行，以避免在主线程中执行长时间的计算或I/O操作导致界面失去响应
    Avoid* avoid;
    QMenu* menu;
};

#endif // PLAN_H
